From: Jim Blandy Date: Sat, 10 Apr 1993 08:05:07 +0000 (+0000) Subject: long_to_cons and cons_to_long are generally useful things; they're X-Git-Tag: archive/raspbian/1%29.2+1-2+rpi1^2~5^2~96545 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=51cf3e317c4a5e5664218b6fe7a1c09f1c81631b;p=emacs.git long_to_cons and cons_to_long are generally useful things; they're needed whether or not X is defined. * xselect.c (long_to_cons, cons_to_long): Moved from here... * data.c (long_to_cons, cons_to_long): ... to here. * lisp.h (long_to_cons, cons_to_long): Add extern declaration. --- diff --git a/src/data.c b/src/data.c index 4b2fa3cebbf..66b4e90157b 100644 --- a/src/data.c +++ b/src/data.c @@ -1425,6 +1425,35 @@ DEFUN ("zerop", Fzerop, Szerop, 1, 1, 0, "T if NUMBER is zero.") return Qnil; } +/* Convert between 32-bit values and pairs of lispy 24-bit values. */ + +Lisp_Object +long_to_cons (i) + unsigned long i; +{ + unsigned int top = i >> 16; + unsigned int bot = i & 0xFFFF; + if (top == 0) + return make_number (bot); + if (top == 0xFFFF) + return Fcons (make_number (-1), make_number (bot)); + return Fcons (make_number (top), make_number (bot)); +} + +unsigned long +cons_to_long (c) + Lisp_Object c; +{ + int top, bot; + if (INTEGERP (c)) + return XINT (c); + top = XCONS (c)->car; + bot = XCONS (c)->cdr; + if (CONSP (bot)) + bot = XCONS (bot)->car; + return ((XINT (top) << 16) | XINT (bot)); +} + DEFUN ("number-to-string", Fnumber_to_string, Snumber_to_string, 1, 1, 0, "Convert NUM to a string by printing it in decimal.\n\ Uses a minus sign if negative.\n\ diff --git a/src/lisp.h b/src/lisp.h index 4e2b86e57ec..a89c5290a69 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -985,6 +985,8 @@ extern Lisp_Object Flsh (), Fash (); extern Lisp_Object Fadd1 (), Fsub1 (); extern Lisp_Object make_number (); +extern Lisp_Object long_to_cons (); +extern unsigned long cons_to_long (); extern void args_out_of_range (); extern void args_out_of_range_3 (); extern Lisp_Object wrong_type_argument (); diff --git a/src/xselect.c b/src/xselect.c index 51592fe7282..bb052ae1ccf 100644 --- a/src/xselect.c +++ b/src/xselect.c @@ -234,36 +234,6 @@ x_atom_to_symbol (display, atom) return val; } -/* Convert between full word time values (last modification times, etc) - and their Lisp representation as a cons cell (HIGH . LOW). */ - -Lisp_Object -long_to_cons (i) - unsigned long i; -{ - unsigned int top = i >> 16; - unsigned int bot = i & 0xFFFF; - if (top == 0) - return make_number (bot); - if (top == 0xFFFF) - return Fcons (make_number (-1), make_number (bot)); - return Fcons (make_number (top), make_number (bot)); -} - -unsigned long -cons_to_long (c) - Lisp_Object c; -{ - int top, bot; - if (INTEGERP (c)) - return XINT (c); - top = XCONS (c)->car; - bot = XCONS (c)->cdr; - if (CONSP (bot)) - bot = XCONS (bot)->car; - return ((XINT (top) << 16) | XINT (bot)); -} - /* Do protocol to assert ourself as a selection owner. Update the Vselection_alist so that we can reply to later requests for our selection. */